Micron Document
Aleph Git


Displaying Raw • Download

docs/example_plugins/comic.py HEAD (8b8a5035) Text, 2.99 KB

T8b949e# This plugin example fetches an XKCD comic
T8b949e# from an external URL and returns it as an
T8b949e# embedded image in an LXMF message.

Tff7b72import T7ee787io
Tff7b72import T7ee787RNS
Tff7b72import T7ee787requests
Tff7b72from T7ee787PIL Tff7b72import Te6edf3Image Tff7b72as Te6edf3PilImage

Tff7b72class T56d364ComicCommandPluginTb4b4b4(Te6edf3SidebandCommandPluginTb4b4b4)Tb4b4b4:
Te6edf3command_name Tff7b72= Ta5d6ff"Ta5d6ffcomicTa5d6ff"

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# Do any initialisation work here
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffComic command plugin example starting...Ta5d6ff"Tb4b4b4)

T8b949e# And finally call start on superclass
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# Do any teardown work here
Tff7b72pass

T8b949e# And finally call stop on superclass
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffhandle_commandTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3argumentsTb4b4b4, Te6edf3lxmTb4b4b4)Tb4b4b4:
Te6edf3comic_source Tff7b72= Ta5d6ff"Ta5d6ffhttps://imgs.xkcd.com/comics/tsp_vs_tbsp.pngTa5d6ff"
Te6edf3response_content Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffThe source for this comic is:Tffea00\nTffd700{Te6edf3comic_sourceTffd700}Ta5d6ff"

Tff7b72tryTb4b4b4:
Te6edf3image_request Tff7b72= Te6edf3requestsTff7b72.Td2a8ffgetTb4b4b4(Te6edf3comic_sourceTb4b4b4, Te6edf3streamTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72if Te6edf3image_requestTff7b72.Td2a8ffstatus_code Tff7b72== T79c0ff200Tb4b4b4:
Te6edf3max_size Tff7b72= T79c0ff320Tb4b4b4, T79c0ff320
Tff7b72with Te6edf3PilImageTff7b72.Td2a8ffopenTb4b4b4(Te6edf3ioTff7b72.Td2a8ffBytesIOTb4b4b4(Te6edf3image_requestTff7b72.Td2a8ffcontentTb4b4b4)Tb4b4b4) Tff7b72as Te6edf3imTb4b4b4:
Te6edf3imTff7b72.Td2a8ffthumbnailTb4b4b4(Te6edf3max_sizeTb4b4b4)
Te6edf3buf Tff7b72= Te6edf3ioTff7b72.Td2a8ffBytesIOTb4b4b4(Tb4b4b4)
Te6edf3imTff7b72.Td2a8ffsaveTb4b4b4(Te6edf3bufTb4b4b4, Tffa657formatTff7b72=Ta5d6ff"Ta5d6ffwebpTa5d6ff"Tb4b4b4, Te6edf3qualityTff7b72=T79c0ff22Tb4b4b4)
Te6edf3image_field Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ffwebpTa5d6ff"Tb4b4b4, Te6edf3bufTff7b72.Td2a8ffgetvalueTb4b4b4(Tb4b4b4)Tb4b4b4]

T8b949e# Send the fetched comic as a message
Tff7b72selfTff7b72.Td2a8ffget_sidebandTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffsend_messageTb4b4b4(
Te6edf3response_contentTb4b4b4,
Te6edf3lxmTff7b72.Td2a8ffsource_hashTb4b4b4,
Tff7b72FalseTb4b4b4, T8b949e# Don't use propagation by default, try direct first
Te6edf3skip_fields Tff7b72= Tff7b72TrueTb4b4b4, T8b949e# Don't include any additional fields automatically
Te6edf3no_display Tff7b72= Tff7b72TrueTb4b4b4, T8b949e# Don't display this message in the message stream
Te6edf3image Tff7b72= Te6edf3image_fieldTb4b4b4, T8b949e# Add the scaled and compressed image
Tb4b4b4)

Tff7b72elseTb4b4b4:
T8b949e# Send an error message
Tff7b72selfTff7b72.Td2a8ffget_sidebandTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffsend_messageTb4b4b4(
Ta5d6ff"Ta5d6ffThe specified comic could not be downloadedTa5d6ff"Tb4b4b4,
Te6edf3lxmTff7b72.Td2a8ffsource_hashTb4b4b4,
Tff7b72FalseTb4b4b4, T8b949e# Don't use propagation by default, try direct first
Te6edf3skip_fields Tff7b72= Tff7b72TrueTb4b4b4, T8b949e# Don't include any additional fields automatically
Te6edf3no_display Tff7b72= Tff7b72TrueTb4b4b4, T8b949e# Don't display this message in the message stream
Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
T8b949e# Send an error message
Tff7b72selfTff7b72.Td2a8ffget_sidebandTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffsend_messageTb4b4b4(
Ta5d6ff"Ta5d6ffAn error occurred while trying to fetch the specified comic:Tffea00\nTffea00\nTa5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4,
Te6edf3lxmTff7b72.Td2a8ffsource_hashTb4b4b4,
Tff7b72FalseTb4b4b4, T8b949e# Don't use propagation by default, try direct first
Te6edf3skip_fields Tff7b72= Tff7b72TrueTb4b4b4, T8b949e# Don't include any additional fields automatically
Te6edf3no_display Tff7b72= Tff7b72TrueTb4b4b4, T8b949e# Don't display this message in the message stream
Tb4b4b4)


T8b949e# Finally, tell Sideband what class in this
T8b949e# file is the actual plugin class.
Te6edf3plugin_class Tff7b72= Te6edf3ComicCommandPlugin

Served by rngit 1.4.2 - Generated in 0.03s